﻿using System;

namespace HK.Core.Common
{
    /// <summary>
    /// BuildMode.
    /// </summary>
    public enum BuildMode 
    {
        /// <summary>
        /// 测试模式
        /// </summary>
        Test,

        /// <summary>
        /// Debug模式.
        /// </summary>
        Debug,

        /// <summary>
        /// Release模式.
        /// </summary>
        Release,

        /// <summary>
        /// Release模式(Runing)<BR/>
        /// 注意：
        /// * 目前仅iOS下专有模式<BR/>
        /// * 模拟器或者设备下运行用模式
        /// </summary>
        ReleaseForRunning,

        /// <summary>
        /// Release模式(Profiling)<BR/>
        /// 注意：<BR/>
        /// * 目前仅iOS下专有模式<BR/>
        /// * 测试各种性能问题，内存泄漏问题用
        /// </summary>
        ReleaseForProfiling,

        /// <summary>
        /// 生产模式.<BR/>
        /// * 基本上与商店模式一样，只不过是用于线上<BR/>
        /// * 保留模式，未使用
        /// </summary>
        Production,

        /// <summary>
        /// 商店模式(线上模式).<BR/>
        /// * 用于安卓商店/苹果商店上线用<BR/>
        /// * 保留模式，未使用
        /// </summary>
        [Obsolete("保留模式")]
        Store,

        /// <summary>
        /// 最大。(计数用)
        /// </summary>
        Max 
    }
    
    /// <summary>
    /// 资源高清
    /// </summary>
    public enum ResourceQuality
    {
        /// <summary>
        /// Low
        /// </summary>
        Low = 0x00000001,
		
        /// <summary>
        /// High Definition
        /// </summary>
        Hd = 0x00000002,
		
        /// <summary>
        /// All
        /// </summary>
        All = Low | Hd
    }
    
    /// <summary>
    /// 常量
    /// </summary>
    public static class Const
    {
        /// <summary>
        /// 库名
        /// </summary>
        public const string HK_LIB_NAME = "Eden";
        
        /// <summary>
        /// 路径前缀 ： Asset路径前缀
        /// </summary>
        public const string PATH_ASSET_PREFIX = "Assets/";
        
        /// <summary>
        /// 路径前缀 ： Resources路径前缀
        /// </summary>
        public const string PATH_RESOURCES_PREFIX = "Resources/";

        /// <summary>
        /// 可序列化资产文件后缀
        /// </summary>
        public const string SASSET_EXTENSION = ".asset";
        
#region Logs

        /// <summary>
        /// 日志设定 - 启用/禁用
        /// </summary>
        public const string PLAYER_PREFS_LOG_ENABLE = "__PLAYER_PREFS_LOG_ENABLE__";      

        /// <summary>
        /// 日志设定 - 线程输出
        /// </summary>
        public const string PLAYER_PREFS_LOG_THREAD = "__PLAYER_PREFS_LOG_THREAD__";        

        /// <summary>
        /// 日志设定 - 日志等级
        /// </summary>
        public const string PLAYER_PREFS_LOG_LEVEL = "__PLAYER_PREFS_LOG_LEVEL__";  

        /// <summary>
        /// 日志设定 - 日志输出标志位
        /// </summary>
        public const string PLAYER_PREFS_LOG_OUTPUT = "__PLAYER_PREFS_LOG_OUTPUT__";

        /// <summary>
        /// 日志设定 - 日志文件大小
        /// </summary>
        public const string PLAYER_PREFS_LOG_FILE_SIZE = "__PLAYER_PREFS_LOG_FILE_SIZE__";

#endregion

#region SAssets

        /// <summary>
        /// 资源用根目录
        /// </summary>
        internal const string RESOURCE_ROOT_DIR = PATH_ASSET_PREFIX + "Resources";
        
        /// <summary>
        /// 可序列化资产目录根目录
        /// </summary>
        public const string HK_RESOURCE_ASSETS = RESOURCE_ROOT_DIR + "/SAssets";
        
        /// <summary>
        /// Editor用根目录
        /// </summary>
        public const string HK_EDITOR_ROOT_DIR = PATH_ASSET_PREFIX + "Editor";
        
        /// <summary>
        /// Editor用根目录
        /// <para>* 可序列化数据</para>
        /// </summary>
        public const string HK_EDITOR_SASSET_DIR = HK_EDITOR_ROOT_DIR + "/Resources/SAssets";
        
        /// <summary>
        /// Editor用根目录
        /// <para>* 窗体数据</para>
        /// </summary>
        public const string HK_WIN_DATA_DIR = HK_EDITOR_ROOT_DIR + "/Resources/Win";

#endregion

#region Counter
        
        /// <summary>
        /// 默认倒计时冷却时间
        /// </summary>
        public const float DefaultCoolTime = 30.0f;

#endregion

#region Settings

        /// <summary>
        /// 菜单优先级
        /// </summary>
        public enum ConstMenuPriority
        {
            GameSettings = 1001,
            SceneRenderSettings = 1002
        }

#region GameSettings

        /// <summary>
        /// 资产文件名 - GameSettings
        /// <para>* 文件后缀 *.asset</para>
        /// </summary>
        public const string SASSET_FILE_GAME_SETTINGS = HK_RESOURCE_ASSETS + "/GameSettings";
        
        /// <summary>
        /// 菜单文本 - Assets/Create/HK/Settings/GameSettings
        /// </summary>
        public const string MENU_TXT_GAME_SETTINGS = HK_LIB_NAME + "/Settings/GameSettings";

#endregion

#region SceneRenderSettings

        /// <summary>
        /// 资产文件名 - SceneRenderSettings
        /// <para>* 文件后缀 *.asset</para>
        /// </summary>
        public const string SASSET_FILE_SCENE_RENDER_SETTINGS = HK_RESOURCE_ASSETS + "/SceneRenderSettings";
                
        /// <summary>
        /// 菜单文本 - Assets/Create/HK/Settings/SceneRenderSettings
        /// </summary>
        public const string MENU_TXT_SCENE_RENDER_SETTINGS = HK_LIB_NAME + "/Settings/SceneRenderSettings";

#endregion

#endregion

    }
}
